An annotation-aware Java virtual machine implementation

نویسندگان

  • Ana Azevedo
  • Alexandru Nicolau
  • Joseph Hummel
چکیده

The Java bytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format ine cient as a program representation for high performance. This ine ciency results from the underlying stack model, as well as the fact that many bytecode operations intrinsically include sub-operations (e.g., iaload includes the address computation, array bounds checks and the actual load of the array element). The stack model, with no operand registers and limiting access to the top of the stack, prevents the reuse of values and bytecode reordering. In addition, the language has no mechanism to indicate which sub-operations in the Java bytecode stream are redundant or subsumed by previous ones. As a consequence, the Java bytecode language inhibits the expression of important compiler optimizations, including register allocation and instruction scheduling. The Java bytecode stream generated by a Java bytecode compiler is a signi cantly under-optimized program representation. The most common solution to overcome this ine ciency is the use of a Just-inTime (JIT) compiler to not only generate native code, but perform optimization as well. However, the latter is a time consuming operation in an already time-constrained translation process. In this paper we present an alternative to an optimizing JIT compiler that makes use of code annotations generated by a Java bytecode compiler. These annotations carry information concerning compiler optimizations. During the translation process, an annotation-aware Java Virtual Machine (JVM) system then uses this information to produce high performance native code without performing much of the necessary analyses or transformations. We describe the implementation of a prototype of an annotation-aware JVM consisting of an annotation-aware JIT compilation system. We conclude the paper showing performance results comparing our system with other JVMs running on SPARC architecture.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Tabular Code Generation: Write Once, Generate Many

PressPot is a system that adds annotations to Java .class files. [3] These annotations are used by an “annotation-aware” Java Virtual Machine (JVM) which uses these annotations to generate high-quality machine code quickly. If these annotated .class files are sent to a normal JVM, they are ignored and the program runs normally. One of the annotations, used for assigning machine registers, is ca...

متن کامل

Comprehensive Profiling Support in the Java Virtual Machine

Existing profilers for Java applications typically rely on custom instrumentation in the Java virtual machine, and measure only limited types of resource consumption. Garbage collection and multi-threading pose additional challenges to profiler design and implementation. In this paper we discuss a general-purpose, portable, and extensible approach for obtaining comprehensive profiling informati...

متن کامل

Using Control Dependencies for Space-Aware Bytecode Verification

Java applets run on a Virtual Machine that checks code integrity and correctness before execution using a module called the Bytecode Verifier. Java Card technology allows Java applets to run on smart cards. The large memory requirements of the verification process do not allow the implementation of an embedded Bytecode Verifier in the Java Card Virtual Machine. To address this problem, we propo...

متن کامل

Towards High-performance and Fault-tolerant Distributed Java Implementations

Java Virtual Machines form an important part of the web and business server market. Distributed Java Virtual Machines have the potential to make a significant contribution to industries that utilize this technology. An attractive platform for this purpose is the cluster, a highly cost-effective and scalable parallel computer model. However, realizing on such a platform a high performance virtua...

متن کامل

Java Annotation - Aware Just - In - Time ( AJIT ) Compilation

The Java Bytecode language lacks expressiveness for traditional compiler optimizations, making this portable, secure software distribution format ineecient as a program representation for high performance. This inee-ciency results from the underlying stack model, as well as the fact that many bytecode operations intrinsically include sub-operations (e.g., iaload includes the address computation...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • Concurrency - Practice and Experience

دوره 12  شماره 

صفحات  -

تاریخ انتشار 2000